# coding:utf-8

"""
1. 利用(面向)对象(属性与方法)去进行编码的过程
2. 自定义对象数据类型就是面向对象中的类(class)的概念
3. 类的定义
    class Name(object):
        attr = something
            def func(self):
4.
    self 是类函数中的必传参数，且必须放在第一个参数位置
    self 是一个对象，他代表实例化的变量自身
    self可以直接通过点来定义一个类变量
    self中的变量与含有self参数的函数可以在类中的任何一个函数内随意调用非函数中定义的变量在定义的时候不用self
5. 对象实例化
    5.1. 对象实例化__init__: 对象生命开始
    5.2. __del__: 删除对象
6. 私有函数和私有变量
    6.1. 无法可以被……实例调用私有函数与变量、只希望类内部业务调用使用，不希望被使用者调用
    6.2. 定义 __age私有变量定义
    6.3. 私有变量
7. 封装
    7.1：将不对外的私有属性或方法通过可对外使用的函数而使用( 类中定义私有的,只有类内部使用,外部无法访问)，保护隐私，不对外
8. 装饰器
    8.1：日志、黑名单等
    装饰器的定义
        #外围函数
        def out(func_args):
            # 内嵌函数
            def inter(*args,**kwargs):
                return func_args(*args,**kwargs)
        return inter
"""


class Person(object):
    name = None

    def word(self):
        print(f'{self.name} go')


person = Person()
person.name = 'i wan to'
person.word()


class Cat(Person):
    __age = None

    def __int__(self, name, age):
        self.name = name
        self.__age = age

    def run(self):
        pass
